package com.blackman.skcrawler.core.crawler.api;


import com.blackman.skcrawler.core.crawler.po.WormGrabedPage;
import com.blackman.skcrawler.core.crawler.po.WormHomePage;
import com.blackman.skcrawler.core.crawler.po.WormPendPage;

import java.util.List;

/**
 * 默认数据回调方法
 *
 * @author sunray_zjb
 * @date 2018/09/35 16:35
 *
 */
public interface IDefaultDataCallBack {

    /**
     * 获取起始页列表数据
     * @param homePage 抓取入口
     * @return
     */
    List<WormHomePage> findHomePageList(WormHomePage homePage);

    /**
     * 更新或新增起始页
     *
     * 更新：根据地址为标识判断
     *
     * @param urlList 链接地址
     */
    void upHomePage(List<String> urlList);

    /**
     * 更新或新增 正则匹配规则
     *
     * 更新：正则+匹配类型判断
     *
     * @param regularList 正则列表
     * @param regularType 匹配类型
     */
    void upPageRegular(List<String> regularList, String regularType);

    /**
     * 寻找匹配种子正则规则列表
     * @param type 类型
     */
    List<String> findSeedListByType(String type);

    /**
     * 获取待抓取url
     * @param count 获取待抓取列表数
     * @return
     */
    List<WormPendPage> findPendPageList(int count);

    /**
     * 更新待抓取数据
     * @param pendPageList 待抓取数据
     */
    void upPendPageBatchById(List<WormPendPage> pendPageList);

    /**
     * 更新带抓取数据
     * @param pendPage
     */
    void upPendPage(WormPendPage pendPage);

    /**
     * 根据状态获取待抓取数据量
     * @param status 状态
     * @return
     */
    int selectPendPageCountByStatus(String status);

    /**
     * 根据url获取已抓取数据
     * @param url 链接地址
     * @return
     */
    WormGrabedPage selectOneByUrl(String url);

    /**
     * 更新已抓取数据
     * @param grabedPage 已抓取
     */
    void upGrabedPageById(WormGrabedPage grabedPage);

    /**
     * 新增已抓取数据
     * @param grabedPage 已抓取
     */
    void insertGrabedPage(WormGrabedPage grabedPage);


}
